﻿using System;
using System.Globalization;

namespace CRM.Database.Model
{
    public partial class TransportConditions : IGetKeyValue, ISetChangedUser
    {
        #region Implementation of IGetKeyValue

        /// <summary>
        /// Получение ключего значения элемента
        /// </summary>
        /// <returns>Ключевое значение</returns>
        public int GetKeyValue()
        {
            return IdTransportCondition;
        }

        #endregion

        #region Implementation of ISetChangedUser

        /// <summary>
        /// Установка пользователя, который сделал изменение
        /// </summary>
        /// <param name="userLogin">Логин пользователя</param>
        public void SetChangedUser(string userLogin)
        {
            if (string.IsNullOrEmpty(userLogin))
                throw new Exception("Логин пользователя не должен быть пустым");

            IdUser = userLogin;
        }

        #endregion

        /// <summary>
        /// Курс евро для транспортного условия
        /// </summary>
        public double InternalCourse
        {
            get { if (InternalCourses != null) return InternalCourses.Course;
                return 0;
            }
        }


        public string TransportConditionStr
        {
            get
            {
                var trucksCapacities = this.TrucksCapacities;
                if (trucksCapacities != null)
                    return trucksCapacities.Capacity + " паллетт по цене " + PallettTransportationCostStr +
                           " за 1 паллетту";

                return "-";
            }
        }

        /// <summary>
        /// Цена транспортировки с НДС в рублях
        /// </summary>
        public string TransportationCostRURwithVATStr
        {
            get { return TransportCostRUR.ToString("c", CultureInfo.CreateSpecificCulture("ru-RU")); }
        }


        /// <summary>
        /// Цена транспортировки без НДС в рублях
        /// </summary>
        public string TransportationCostRURwithoutVATStr
        {
            get { return TransportationCostRURwithoutVAT.ToString("c", CultureInfo.CreateSpecificCulture("ru-RU")); }
        }


        /// <summary>
        /// Цена транспортировки без НДС в рублях
        /// </summary>
        public double TransportationCostRURwithoutVAT
        {
            get { return (double) (TransportCostRUR*(decimal) 0.82); }
        }

        /// <summary>
        /// Цена транспортировки без НДС в евро
        /// </summary>
        public string TransportationCostEURwithoutVATStr
        {
            get { return TransportationCostEURwithoutVAT.ToString("c", CultureInfo.CreateSpecificCulture("fr-FR")); }
        }

        /// <summary>
        /// Цена транспортировки в евро без НДС
        /// </summary>
        public double TransportationCostEURwithoutVAT
        {
            get { return TransportationCostRURwithoutVAT/InternalCourse; }
        }


        /// <summary>
        /// Цена транспортировки одной паллетты
        /// </summary>
        public double PallettTransportationCost
        {
            get { if (TrucksCapacities != null) return (TransportationCostEURwithoutVAT/TrucksCapacities.CapacityForCalculation);
                return 0;
            }
        }


        /// <summary>
        /// Цена транспортировки одной паллетты
        /// </summary>
        public string PallettTransportationCostStr
        {
            get { return PallettTransportationCost.ToString("c", CultureInfo.CreateSpecificCulture("fr-FR")); }
        }


        /// <summary>
        /// Название юридического лица
        /// </summary>
        public string LegalEntityName
        {
            get { return LegalEntities.Name; }
        }


        /// <summary>
        /// Единица зимерения
        /// </summary>
        public string Unit
        {
            get { return Units.LocalizedName; }
        }
    }
}